package com.smart.lib.mapper;

import com.smart.lib.entity.BorrowOrderInfo;
import com.smart.lib.entity.UserBorrowData;
import com.smart.lib.entity.UserInfo;
import com.smart.lib.util.Pager;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 图书借阅接口
 * */
@Mapper
public interface BorrowMapper {
    /**
     * 借阅图书
     * @param user_id
     * @param book_id
     * */
    public Integer borrowBook(BorrowOrderInfo borrowOrderInfo);

    /**
     * 归还图书
     * @param user_id
     * @param book_id
     * */
    public Integer returnBook(BorrowOrderInfo borrowOrderInfo);

    /**
     * 图书借阅订单分页数据+查询搜索
     * */
    public List<BorrowOrderInfo> getBorrowOrderMapperBySearch(Pager pager);

    /**
     * 图书借阅订单分页数据+查询搜索
     * 查询数据总数
     * */
    public Integer getBorrowOrderMapperCountsBySearch(Pager pager);

    /**
     * 今日借阅中的图书数量
     * */
    public Integer getCurrentBorrowTotal();

    /**
     * 总共未归还图书总量，也就是借阅中的数量
     * */
    public Integer getBorrowingTotal();

    /**************************************
     * 用户借阅历史数据
     * 需要查询指定用户总借阅数，当前借阅，逾期次数，准时归还
     * 还需要查询指定用户借阅记录，图书名、借阅日期、应归还日期、实际归还日期、状态
     * */

    /**
     * 第一组查询结果：指定用户总借阅数，当前借阅，逾期次数，准时归还
     * @total_borrows：总借阅数
     * @current_borrows：当前借阅数
     * @overdue_times：逾期次数
     * @ontime_returns：准时归还次数
     * */
    public UserBorrowData getUserBorrowStats(Pager pager);

    /**
     * 第二组查询结果：指定用户借阅记录，图书名、借阅日期、应归还日期、实际归还日期、状态分页数据
     * */
    public List<BorrowOrderInfo> getUserBorrowHistoryMapper(Pager pager);

    /**
     * 第二组查询结果：指定用户借阅记录，图书名、借阅日期、应归还日期、实际归还日期、状态分页总数据
     * */
    public Integer getCountUserBorrowHistoryMapper(Pager pager);
}
